#ifndef NAVIGATIONWIDGET_H
#define NAVIGATIONWIDGET_H

#include <QWidget>
#include <QDebug>

namespace Ui {
class NavigationWidget;
}

/**
 * @brief 校园导航核心交互控件类
 * 
 * 该类集成地图展示、路径查询、导航结果显示等功能，负责处理用户交互事件
 * 并与地图核心模块进行数据交互。通过信号槽机制实现界面与逻辑分离。
 */
class NavigationWidget : public QWidget
{
    Q_OBJECT

public:
    /**
 * @brief 构造函数
 * @param parent 父控件指针
 * 
 * 初始化时自动加载应用程序目录下的hagongda.map2地图文件
 */
explicit NavigationWidget(QWidget *parent = nullptr);
    ~NavigationWidget();

private slots:
    /**
 * @slot 查询按钮点击槽
 * 
 * 触发路径计算逻辑，将输入框的起点终点坐标发送至地图核心模块
 */
void on_pushButton_clicked();
    /**
 * @slot 接收清除指令
 * 
 * 清空路径显示列表的临时数据
 */
void acceptListClear();
    /**
 * @slot 接收路径结果
 * @param result 格式化路径字符串
 * 
 * 格式示例："北门 -> 教学楼A(200米) -> 食堂"
 */
void acceptListAdd(QString result);
    /**
 * @slot 接收地图核心坐标点
 * @param plist 坐标点列表
 * 
 * 格式说明：每个QString元素为"x,y"格式的坐标对
 */
void acceptMapCorePl(QStringList plist);
    /**
 * @slot 接收最短路径结果
 * @param path 最短路径描述
 * 
 * 格式示例："总距离：1500米 | 途径：北门、教学楼C、图书馆"
 */
void acceptMinPath(QString path);


private:
    Ui::NavigationWidget *ui;

};

#endif // NAVIGATIONWIDGET_H
